package com.lywz.biz.common.dao;

import java.io.Serializable;
import java.util.List;

/**
 * 通用DAO
 * 
 * @author Lionel pang
 * @date 2010-3-18
 * 
 * @update (insert: queryById, queryByPage)
 * @author yangbl
 * @date 2010-4-19
 * 
 */
public interface CommonDao {

    /**
     * 插入对象
     * 
     * @param <T>
     * @param city
     */
    public <T> void insert(T obj) throws Exception;

    /**
     * 更新对象
     * 
     * @param <T>
     * @param obj
     * @return
     */
    public <T> void update(T obj) throws Exception;

    /**
     * 删除对象
     * 
     * @param <T>
     * @param obj
     * @return
     */
    public <T> void delete(T obj) throws Exception;

    /**
     * 更新或者删除
     * 
     * @param <T>
     * @param ojb
     */
    public <T> void saveOrUpdate(T ojb) throws Exception;
    
    /**
	 * 按照id查询实体类
	 * 
	 * @param <T>
	 * @param <I>
	 * @param ojb
	 * @param id
	 * @return
	 * @throws Exception
	 */
	public <T, I extends Serializable> T queryById(Class<T> clazz, I id) throws Exception;
	
	/**
	 * 分页
	 * 
	 * @param <T>
	 * @param <F>
	 * @param <N>
	 * @param hql
	 * @param firstResult
	 * @param num
	 * @return
	 * @throws Exception
	 */
	public <T> List<T> queryByPage(String hql, int firstResult, int num) throws Exception;

}
